package com.gxks.lhs.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxks.lhs.entity.User;

import java.math.BigDecimal;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author LuoHaisong
 * @since 2023-05-18
 */
public interface IUserService extends IService<User> {
    /**
     * 封禁用户，把用户的状态改为禁用状态
     *
     * @param userId 要封禁用户的id
     * @return ture/false 返回是否封禁成功
     */
    boolean banUser(String userId);

    /**
     * 修改用户信息
     *
     * @param user 用户修改的信息
     * @return ture/false 返回是否修改成功
     */
    boolean updateUser(User user);

    /**
     * 查询所有用户信息
     *
     * @return 返回用户列表
     */
    Page<User> findAllUsers(Integer current, Integer size);

    /**
     * 根据条件查询用户列表
     *
     * @param user
     * @return
     */
    Page<User> findUsersByCondition(User user, Integer current, Integer size);

    /**
     * 根据id获取用户详细信息
     *
     * @param id
     * @return
     */
    User getUserById(String id);

    /**
     * 根据id解封用户
     *
     * @param userId
     * @return
     */
    boolean unseal(Integer userId);

    /**
     * 更据用户名查询用户
     *
     * @param username
     */
    User getUserByUsername(String username);

    /**
     * 添加用户
     *
     * @param user
     */
    boolean addUser(User user);

    /**
     * 删除用户
     *
     * @param userId
     * @return
     */
    boolean deleteUser(String userId);

    /**
     * 根据手机号查询用户,用用于登录
     *
     * @param phone
     * @return
     */
    User getUserByPhone(String phone);

    /**
     * 查询用户是否已经存在
     */
    boolean isExist(String phone);

    /**
     * 获取用户手机号
     *
     * @param userId
     * @return
     */

    String getPhoneByUserId(String userId);

    /**
     * 获取用户余额
     */
    BigDecimal getBalanceByUserId(String userId);

    /**
     * 用户提现
     */
    boolean withdraw(String userId, BigDecimal amount);

    /**
     * 用户余额支付
     *
     * @param userId
     * @param amount
     * @return
     */
    boolean balancePay(String userId, BigDecimal amount);

    /**
     * 用户充值
     *
     * @param userId
     * @param amount
     * @return
     */
    boolean recharge(String userId, BigDecimal amount);

    /**
     * 判断用户师范被封禁
     *
     * @param UserId
     * @return
     */
    boolean IsBan(String UserId);

    boolean updateUserPassword(User user);
}
